////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2017-2018 Qualcomm Technologies, Inc.
// All Rights Reserved.
// Confidential and Proprietary - Qualcomm Technologies, Inc.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// THIS IS AUTO-GENERATED CODE.  PLEASE DO NOT EDIT (File bug reports against tools).
///
/// Auto-generated by: ParameterParser V1.1.4
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @file  ds4to1_1_0_0.h
/// @brief Auto-generated Chromatix parameter file
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef DS4TO1_1_0_0_H
#define DS4TO1_1_0_0_H

#include "parametermodule.h"
#include "parameterfilesymboltable.h"
#include "parametertypes.h"
#include "ispglobalelements.h"

#define DS4TO1_1_0_0_NAMESPACE_BEGIN namespace ds4to1_1_0_0 {
#define DS4TO1_1_0_0_NAMESPACE_END }

DS4TO1_1_0_0_NAMESPACE_BEGIN

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// mod_ds4to1v10_pass_reserve_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct mod_ds4to1v10_pass_reserve_dataType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// pass_trigger
    ///
    /// Default Value: PASS_FULL,PASS_DC4,PASS_DC16,PASS_DC64
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ispglobalelements::trigger_pass pass_trigger;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// pass_data
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct pass_dataStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// coeff_07
        ///
        /// Tuning Level:  rarely_tune
        /// Description:   8-Tap coefficient for pixels at locations 0 and 7. . For both Horizontal and vertical filters. Default
        ///                value (for 8-Tap typical) = 125. Typical value for binning option = 0. Coefficients values must comply
        ///                with:. coeff_xx L.E. 256 (xx can be 07, 16 or 25). coeff_07+coeff_16+coeff_25 L.E. 512.
        ///                coeff_07+coeff_16+coeff_25 G.E. 256.
        /// Default Value: 125
        /// Range:         [0, 256]
        /// Bit Depth:     9u
        /// Conversion:    No Conversion needed
        /// Notes:         Hide in GUI ! Constant (per pass): no dynamic configuration even when control variable change.
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 coeff_07;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// coeff_16
        ///
        /// Tuning Level:  rarely_tune
        /// Description:   8-Tap coefficient for pixels at locations 1 and 6. For both Horizontal and vertical filters. Default
        ///                value (for 8-Tap typical) = 91. Typical value for binning option = 0. Value must comply same rules as in
        ///                coeff_07.
        /// Default Value: 91
        /// Range:         [0, 256]
        /// Bit Depth:     9u
        /// Conversion:    No Conversion needed
        /// Notes:         Hide in GUI ! Constant (per pass): no dynamic configuration even when control variable change.
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 coeff_16;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// coeff_25
        ///
        /// Tuning Level:  rarely_tune
        /// Description:   8-Tap coefficient for pixels at locations 2 and 5. . For both Horizontal and vertical filters. Default
        ///                value (for 8-Tap typical) = 144. Typical value for binning option = 256. Value must comply same rules as
        ///                in coeff_07.
        /// Default Value: 144
        /// Range:         [0, 256]
        /// Bit Depth:     9u
        /// Conversion:    No Conversion needed
        /// Notes:         Hide in GUI ! Constant (per pass): no dynamic configuration even when control variable change.
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 coeff_25;
    } pass_data;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_ds4to1v10_reserveType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct chromatix_ds4to1v10_reserveType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// mod_ds4to1v10_pass_reserve_data - Array
    /// Length:        4
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    mod_ds4to1v10_pass_reserve_dataType mod_ds4to1v10_pass_reserve_data[4];
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_ds4to1v10Type
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct chromatix_ds4to1v10Type
{
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Binary file symbol table entry ID
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 SymbolTableID;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// enable_section
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct enable_sectionStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;
    } enable_section;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// module_version
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct module_versionStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;
        INT32 major_revision;
        INT32 minor_revision;
        INT32 incr_revision;
    } module_version;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// control_variables
    ///
    /// Default Value: control_pass
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct control_variablesStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// control_var_type
        /// Default Value: control_pass
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        enum class control_var_typeEnum
        {
            control_pass = 0
        } control_var_type;
    } control_variables;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// chromatix_ds4to1v10_reserve
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_ds4to1v10_reserveType chromatix_ds4to1v10_reserve;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_ds4to1v10TypeClass
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class chromatix_ds4to1v10TypeClass : public ParameterModule, public chromatix_ds4to1v10Type
{
public:
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Version
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static const UINT16 MAJOR = 1;
    static const UINT16 MINOR = 0;
    static const UINT32 PATCH = 0;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Default Constructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_ds4to1v10TypeClass(
        const CHAR* name);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Constructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_ds4to1v10TypeClass(
        const CHAR* name,
        UINT32 modeId,
        UINT16 mode,
        UINT16 subMode,
        UINT32 group);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Destructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    virtual ~chromatix_ds4to1v10TypeClass();

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// GetName
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static const CHAR* GetName(
        const CHAR* type);


    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_ds4to1v10_pass_reserve_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_ds4to1v10_pass_reserve_dataType(
        ParameterFileSymbolTableEntry* entry,
        mod_ds4to1v10_pass_reserve_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_ds4to1v10_pass_reserve_dataType_pass_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_ds4to1v10_pass_reserve_dataType_pass_dataStruct(
        ParameterFileSymbolTableEntry* entry,
        mod_ds4to1v10_pass_reserve_dataType::pass_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_ds4to1v10_reserveType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_ds4to1v10_reserveType(
        ParameterFileSymbolTableEntry* entry,
        chromatix_ds4to1v10_reserveType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_ds4to1v10Type
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_ds4to1v10Type(
        ParameterFileSymbolTableEntry* entry,
        chromatix_ds4to1v10Type* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load module_versionStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmodule_versionStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_ds4to1v10Type::module_versionStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load control_variablesStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadcontrol_variablesStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_ds4to1v10Type::control_variablesStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Parse symbol table entry, and return a new object
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    virtual ParameterModule* Parse(
        ParameterSetManager* manager,
        ParameterFileSymbolTableEntry* entry) const;

}; // End class chromatix_ds4to1v10TypeClass

DS4TO1_1_0_0_NAMESPACE_END
#endif // DS4TO1_1_0_0_H

